home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / d3_disp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  4.3 KB  |  160 lines

  1. /*****************************************************************************
  2.   FILE           : d3_disp.c
  3.   SHORTNAME      : disp.c
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : event handler and creation of the display window
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Ralf Huebner
  10.   DATE           : 1.12.1991
  11.  
  12.   CHANGED BY     : Sven Doering
  13.   IDENTIFICATION : @(#)d3_disp.c    1.10 3/2/94
  14.   SCCS VERSION   : 1.10
  15.   LAST CHANGE    : 3/2/94
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.  
  19. ******************************************************************************/
  20. #include <stdio.h>
  21. #include <ctype.h>
  22. #include <string.h>
  23. #include <X11/Xlib.h>
  24. #include <X11/Xutil.h>
  25. #include <X11/Xos.h>
  26. #include <X11/Intrinsic.h>
  27. #include <X11/Shell.h>
  28. #include <X11/StringDefs.h>
  29. #include <X11/Xaw/Box.h>
  30. #include <X11/Xaw/Form.h>
  31. #include <X11/Xaw/Label.h>
  32. #include <X11/Xaw/Cardinals.h>
  33.  
  34. #include "ui.h"
  35. #include "ui_mainP.h"
  36. #include "ui_xGraphic.h"
  37. #include "d3_global.h"
  38. #include "d3_main.h"
  39.  
  40. #include "d3_disp.ph"
  41.  
  42.  
  43. /*****************************************************************************
  44.   FUNCTION : d3_eventProc
  45.  
  46.   PURPOSE  : this is the event handler of the display window
  47.   RETURNS  : 
  48.   NOTES    :
  49.  
  50. ******************************************************************************/
  51.  
  52.  
  53. void d3_eventProc (Widget w, Display *display, XEvent *event)
  54. {
  55.  
  56.     static int doExpose = TRUE;
  57.  
  58.     switch (event->type)
  59.       {
  60.         case MapNotify:
  61.                break;    
  62.         case UnmapNotify:
  63.                break;
  64.         case Expose:
  65.                if (event->xexpose.count == 0)
  66.                  {
  67.                    if (doExpose)
  68.                      {
  69.                        d3_drawNet ();
  70.                      }
  71.                    else
  72.                      { 
  73.                        doExpose = TRUE;
  74.                      }
  75.                  }
  76.                break;
  77.         case VisibilityNotify:
  78.                break;
  79.         case ConfigureNotify:
  80.                d3_recenter_window (event->xconfigure.width, 
  81.                                   event->xconfigure.height);
  82.                d3_drawNet ();
  83.                doExpose = FALSE;
  84.                break;
  85.         case CirculateNotify:
  86.                break;
  87.         
  88.       }
  89. }
  90.  
  91.  
  92.  
  93.  
  94.  
  95. /*****************************************************************************
  96.   FUNCTION : d3_createDisplayWindow
  97.  
  98.   PURPOSE  : creates the display window
  99.   RETURNS  : 
  100.   NOTES    :
  101.  
  102. ******************************************************************************/
  103.  
  104.  
  105.  
  106. void d3_createDisplayWindow (void)
  107. {
  108.     Widget       d3_frameWidget, d3_displayWidget;
  109.     Arg          arg[25];
  110.     Cardinal     n;
  111.     char         buf[40];
  112.     unsigned long foreground, background;
  113.  
  114.     if (d3_displayIsReady)
  115.         return;
  116.  
  117.     sprintf (buf, "3D-display");
  118.  
  119.     n = 0;  
  120.     d3_displayMainWidget = XtCreatePopupShell (buf, topLevelShellWidgetClass, 
  121.                                                ui_toplevel, NULL, ZERO); 
  122.     d3_frameWidget = XtCreateManagedWidget ("form", formWidgetClass, 
  123.                                             d3_displayMainWidget, NULL, ZERO);
  124.  
  125.     n = 0;  
  126.     XtSetArg (arg[n], XtNwidth, d3_displayXsize); n++;
  127.     XtSetArg (arg[n], XtNheight, d3_displayYsize); n++;
  128.     d3_displayWidget = XtCreateManagedWidget("display", boxWidgetClass, 
  129.                                              d3_frameWidget, arg, n);
  130.  
  131.     XtAddEventHandler (d3_displayWidget, StructureNotifyMask | ExposureMask, 
  132.                        FALSE, (XtEventHandler) d3_eventProc, ui_display);
  133.  
  134.     ui_checkWindowPosition(d3_displayMainWidget);
  135.     XtPopup (d3_displayMainWidget, XtGrabNone);
  136.     XtAddEventHandler (d3_displayWidget, StructureNotifyMask | ExposureMask, 
  137.                        FALSE, (XtEventHandler) d3_eventProc, ui_display);
  138.  
  139.     d3_display = ui_display; 
  140.     d3_window = XtWindow (d3_displayWidget);
  141.     d3_gc = XCreateGC (d3_display, d3_window, ZERO, NULL);
  142.     d3_screen = DefaultScreen (d3_display);
  143.  
  144.     background = WhitePixel (d3_display, d3_screen);
  145.     foreground = BlackPixel (d3_display, d3_screen);
  146.     XSetBackground (d3_display, d3_gc, background);
  147.     XSetForeground (d3_display, d3_gc, foreground);
  148.     d3_textColor = foreground;
  149.  
  150.     ui_xToggleBackingStore (TRUE, d3_display, d3_window);
  151.  
  152.     d3_displayIsReady = TRUE;
  153.  
  154.  
  155.  
  156. }
  157.  
  158. /* end of file */
  159. /* lines: 190 */
  160.